package com.zw.cloud.mybatis.plus.entity.stenter;

import java.math.BigDecimal;

import com.baomidou.mybatisplus.annotation.*;

import java.time.LocalDateTime;
import java.io.Serializable;

import com.zw.cloud.mybatis.plus.db.typehandlers.JsonTypeHandler;
import com.zw.cloud.mybatis.plus.enums.ProductTypeEnum;
import lombok.Data;
import lombok.EqualsAndHashCode;

/**
 * <p>
 * 定型机历史工艺
 * </p>
 *
 * @author zw
 * @since 2023-11-14
 */
@Data
@EqualsAndHashCode(callSuper = false)
@TableName(value = "base_tenter_craft_history", autoResultMap = true)
public class BaseTenterCraftHistory implements Serializable {

    private static final long serialVersionUID = 1L;

    /**
     * 主键
     */
    @TableId(value = "id", type = IdType.ASSIGN_ID)
    private Long id;

    /**
     * 客户编号
     */
    private String customerNo;

    /**
     * 客户名称
     */
    private String customerName;

    /**
     * 坯布名称
     */
    private String fabricName;

    /**
     * 坯布编号
     */
    private String fabricNo;

    /**
     * 色号
     */
    private String colorNo;

    /**
     * 颜色名称
     */
    private String colorName;

    /**
     * 批次号
     */
    private String batchNo;

    /**
     * 上超喂
     */
    private BigDecimal topFeed;

    /**
     * 下超喂
     */
    private BigDecimal lowerFeed;

    /**
     * 毛刷超喂
     */
    private BigDecimal brushFeed;

    /**
     * 车速
     */
    private BigDecimal speed;

    /**
     * 落布超喂
     */
    private BigDecimal fallingFeed;

    /**
     * 冷水辊超喂
     */
    private BigDecimal outClothFeed;

    /**
     * 排风设定转速
     */
    @TableField(typeHandler = JsonTypeHandler.class)
    private Object speciWindSpeed;

    /**
     * 循环风设定转速
     */
    @TableField(typeHandler = JsonTypeHandler.class)
    private Object speciCycleWindSpeed;

    /**
     * 烘箱设定温度
     */
    @TableField(typeHandler = JsonTypeHandler.class)
    private Object dryingRoomPresetTemp;

    /**
     * 工厂id
     */
    @TableField(fill = FieldFill.INSERT)
    private String orgCode;

    /**
     * 白坯克重
     */
    private BigDecimal gramWeight;

    /**
     * 下机实际纬密
     */
    private String weftDensity;

    /**
     * 上机实际纬密
     */
    private String upperWeftDensity;

    /**
     * 总门幅
     */
    private String totalAmplitude;

    /**
     * 助剂(防水类、软剂类、其他)
     */
    @TableField(typeHandler = JsonTypeHandler.class)
    private Object assistant;

    /**
     * 备注
     */
    private String remark;

    /**
     * 创建用户
     */
    @TableField(fill = FieldFill.INSERT)
    private String createUser;

    /**
     * 创建时间
     */
    @TableField(fill = FieldFill.INSERT)
    private LocalDateTime createTime;

    /**
     * 创建系统
     */
    @TableField(fill = FieldFill.INSERT)
    private String createSystem;

    /**
     * 更新用户
     */
    @TableField(fill = FieldFill.INSERT_UPDATE)
    private String updateUser;

    /**
     * 更新时间
     */
    @TableField(fill = FieldFill.INSERT_UPDATE)
    private LocalDateTime updateTime;

    /**
     * 修改系统
     */
    @TableField(fill = FieldFill.INSERT_UPDATE)
    private String updateSystem;

    /**
     * 是否删除：0未删除，1已删除
     */
    private Integer isDeleted;

    /**
     * 配桶数量
     */
    private BigDecimal ptQuantity;

    /**
     * 创建用户名称
     */
    private String createUserName;

    /**
     * 工艺名称
     */
    private Long craftType;

    /**
     * 规格
     */
    private String specification;

    /**
     * 风格
     */
    private String style;

    /**
     * 循环风转速(0-9999)
     */
    private BigDecimal fanSpeed;

    /**
     * 烘箱温度(0-9999)
     */
    private BigDecimal dryingRoomTemp;

    /**
     * 排风转速(0-9999)
     */
    private BigDecimal exhaustSpeed;

    /**
     * 轧车压力(0-100)
     */
    private BigDecimal rollingPressure;

    /**
     * 扭度
     */
    private BigDecimal torsion;

    /**
     * 定后克重
     */
    private String scheduleGramHeft;

    /**
     * 下机计划纬密
     */
    private String scheduleWeftDensity;

    /**
     * 上机计划纬密
     */
    private String upperScheduleWeftDensity;

    /**
     * 弹力
     */
    private String scheduleElasticity;

    /**
     * 动态字段
     */
    @TableField(typeHandler = JsonTypeHandler.class)
    private Object dynamicField;

    /**
     * 设备id,支持多条
     */
    @TableField(typeHandler = JsonTypeHandler.class)
    private Object deviceIds;


    /**
     * 工艺类型
     */
    private Long craftMold;

    /**
     * 设备名称
     */
    private String deviceName;

    /**
     * 定型要求
     */
    private String stereotypeRequirement;

    /**
     * 工艺来源(0-标准工艺,1-算法工艺)
     */
    private Integer craftSource;

    /**
     * 生产记录表id(base_product_record)
     */
    private Long productRecordId;

    /**
     * 门幅JSON
     */
    @TableField(typeHandler = JsonTypeHandler.class)
    private Object doorWidthActual;

    /**
     * 成品布克重(成品克重)
     */
    private String productWeight;

    /**
     * 缩率
     */
    private BigDecimal shrinkage;

    /**
     * 厚度
     */
    private String thickness;

    /**
     * 中车操作员
     */
    private String preOperator;

    /**
     * 设备品牌型号
     */
    private String brand;

    /**
     * 色系
     */
    private String colorSystem;

    /**
     * 定前克重
     */
    private Integer preWeight;

    /**
     * 成品门幅
     */
    private String fabricWidth;

    /**
     * 定前克重
     */
    private String schedulePreWeight;

    /**
     * 还原克重
     */
    private String reductionWeight;

    /**
     * 还原门幅
     */
    private String reductionAmplitude;

    /**
     * 不良率
     */
    private BigDecimal notNiceRate;

    /**
     * 生产记录id(算法生成)
     */
    private Long productionId;

    /**
     * 生产类型(0试样，1大货)
     */
    private Integer productType;

    /**
     * 工艺版本号
     */
    private Integer craftVersion;

    /**
     * 版本ID
     */
    private Long craftVersionId;

    /**
     * 工艺版本号 --页面展示需要
     */
    @TableField(exist = false)
    private String craftVersionStr;

    /**
     * 工艺版本号转换
     */
    public String fillCraftVersionStr() {
        if (ProductTypeEnum.SAMPLE_GOODS.getTypeCode().equals(this.getProductType())) {
            if (0 == this.craftVersion) {
                return "v0";
            }
            return "v0." + this.craftVersion;
        } else {
            return "v" + this.craftVersion;
        }
    }

}
